#pragma once

// Forwarded classes
class CPdbDump;
class CPdbParser;
class CPdbModule;
class CPdbTranslationMaps;

class CPdbFile : public IPdbFile
{
public:
	CPdbFile(CPdbParser*, const std::wstring& path);
	virtual ~CPdbFile();
		
	bool Load(const std::wstring& sFileName);
	void Close();
	
	GUID GetGuid() const;
	std::vector<IPdbModule*>& GetModules();
	bool IsStripped();

	//	Accessor
	IDiaSession* GetDiaSession() const { return m_pIDiaSession; }

private:
	void Cleanup();
	bool LoadSymbolsFileWithoutValidation(const std::wstring& sPdbFileName);

	const std::wstring& m_sFileName;
	CPdbParser* m_pPdbParser;
	IDiaSession* m_pIDiaSession;
	IDiaSymbol* m_pIDiaSymbol;
	std::vector<IPdbModule*> m_vectorSymbols;
	CPdbTranslationMaps m_PdbTranslationMaps;
};
